/*题目：
  定义一个长度为[16][16]的整型二维数组并随机生成所有位置的元素值(1~100)，
  分别实现二维数组每行元素的累加和及每列元素的累加和并打印。
  再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印。
*/

import java.util.Random;

public class DoubleArray {

    public static void main(String[] args) {

        // 1.定义一个长度为[16][16]的整型二维数组
        int[][] arr = new int[16][16];
        // 2a.随机生成所有位置的元素值(1~100)
        Random r = new Random();
        for (int i = 0; i < 16; i++) {
            for (int j = 0; j < 16; j++) {
                arr[i][j] = r.nextInt(99)+1;
            }
        }

        // 2b.向用户显示生成的二位数组的数值
        System.out.println("已为您生成了一个[16][16]的整型二维数组，并随机生成了所有位置的元素值(1~100):");
        for (int i = 0; i < 16; i++) {
            for (int j = 0; j < 16; j++) {
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }

        // 3a.计算每行、每列元素的累加和
        // 数组中的初始默认值均为0,
        // sum1用来储存 每行 元素的累加和,
        // sum2用来储存 每列 元素的累加和,
        int []sum1 = new int[16];
        int []sum2 = new int[16];
        for (int i = 0; i < 16; i++) {
            for (int j = 0; j < 16; j++) {
                sum1[i] += arr[i][j];
                sum2[i] += arr[j][i];
            }
        }

        //3b. 打印每行、每列的累加和
        System.out.println("==========================================");
        for (int i = 0; i < 16; i++) {
            System.out.println("第" + (i+1) + "行的累加和为：" + sum1[i]);
        }
        System.out.println("==========================================");
        for (int i = 0; i < 16; i++) {
            System.out.println("第" + (i+1) + "列的累加和为：" + sum2[i]);
        }

        // 4a. sum3用来储存 左上角到右下角 元素的累加和
        //    左上角到右下角 => (0,0) , (1,1) ... (15,15)
        int sum3 = 0;
        for (int i = 0; i < 16; i++) {
            sum3 += arr[i][i];
        }
        // 4b. 输出 左上角到右下角 元素的累加和
        System.out.println("==========================================");
        System.out.println("左上角到右下角 元素的累加和为：" + sum3);

        // 5a. sum4用来储存 右上角到左下角 元素的累加和
        //    右上角到左下角 => (0,15) , (1,14) , (2,13)... (15,0)
        int sum4 = 0;
        for (int i = 0; i < 16; i++) {
            sum4 += arr[i][15-i];
        }
        // 5b. 输出 右上角到左下角 元素的累加和
        System.out.println("右上角到左下角 元素的累加和为：" + sum4);
    }
}